package spikectrl

import (
	"encoding/json"
	"net/http"
	"web_server/model/mainmodel"
	"web_server/model/spikemodel"
	"web_server/utils"

	"github.com/gin-gonic/gin"
)

// 页面显示
func Spike(ctx *gin.Context, user mainmodel.UserModel) {
	//访问订单处理服务并获取信息
	ret := spikemodel.GetSpikeCheck(user.Id)
	if ret == nil {
		ctx.HTML(http.StatusOK, "spike-close.html", nil)
		return
	}
	//针对不同状态显示不同页面信息
	if (*ret)["status"].(bool) != true {
		ctx.HTML(http.StatusOK, "spike-close.html", nil)
	} else if (*ret)["spec"] == "Q" {
		ctx.HTML(http.StatusOK, "spike-inque.html", nil)
	} else if (*ret)["spec"] == "N" {
		ctx.HTML(http.StatusOK, "spike-fill.html", gin.H{
			"fl":     spikemodel.GetFruitModel(),
			"id":     user.Id,
			"pubkey": utils.GetPubKeyString(),
		})
	} else {
		ctx.HTML(http.StatusOK, "spike-result.html", gin.H{
			"fruit": (*ret)["spec"],
		})
	}
}

// 抢水果可用时, 处理抢水果信息
func SpikePost(ctx *gin.Context, user mainmodel.UserModel) {
	//获取传来的信息, 并且进行BASE64解密/RSA解密/json解析
	r := ctx.Request
	data := r.FormValue("data")
	var jsdata struct {
		Id       int    `json:"id"`
		Specname string `json:"specname"`
	}
	if err := utils.B64RsaJsonDecrypt(data, &jsdata); err != nil {
		ctx.JSON(0, gin.H{
			"status": false,
			"msg":    "信息格式错误",
		})
		return
	}
	datab, _ := json.Marshal(jsdata)
	//数据合法性检测
	if jsdata.Specname == "" {
		ctx.JSON(0, gin.H{
			"status": false,
			"msg":    "信息格式错误",
		})
		return
	}
	//信息交由订单处理服务处理
	ret := spikemodel.GetSpikeInsert(datab)
	if ret == nil {
		ctx.JSON(0, gin.H{
			"status": false,
			"msg":    "秒杀尚未开始或您不在参与本次秒杀的用户中",
		})
		return
	}
	ctx.JSON(http.StatusOK, ret)
}
